// ES5  没有类 所以用构造函数和原型来模仿类

// function Person(name, age) {
//     this.name = name;
//     this.age = age
// }
// Person.prototype.sayName = function() {
//     console.log(this.name)
// }
// Person.prototype.setName = function(name) {
//     this.name = name
//     console.log(this.name)
// }

// //调用实例化
// let eg = new Person('lili', 12)
// eg.sayName() //lili
// eg.setName('hahhahah') //hahhahah


// ES6   类
// 语法

// class 函数名 {
//     这里面是写方法的， 方法和方法之间不能用 ','
//     隔开， 不能写属性， 否则实例化的时候会报错
//     constructor() { //这个是默认方法，自动执行，不需要调用，不写的话会默认加上的

//     }
//     static 方法名(){//静态方法，实例调用没用，要类调用才可以

//     }
// }


// class Person {
//     constructor(name, age) {
//         this.name = name;
//         this.age = age;
//     }
//     sayName() {
//         console.log(this.name)
//     }
//     setName(name) {
//         this.name = name
//         console.log(this.name)
//     }
//     static play() {
//         console.log('玩')
//     }
// }

// //实例化
// let eg = new Person('lili', 12);
// eg.sayName() //lili
// eg.setName('ssssss') //ssssss
// eg.play() //报错
// Person.play() //玩







// 继承

// ES5  例子
// function Person(name, age) {
//     this.name = name;
//     this.age = age
// }
// Person.prototype.sayName = function() {
//     console.log(this.name)
// }
// Person.prototype.setName = function(name) {
//     this.name = name
//     console.log(this.name)
// }

// //调用实例化
// let eg = new Person('lili', 12)
// eg.sayName() //lili
// eg.setName('hahhahah') //hahhahah


// function Student() {
//     Person.apply(this, arguments)
// }
// Student.prototype = Object.create(Person.prototype) //student 的原型方法是创建的一个对象，内容为person的原型
// Student.prototype.constructor = Student
//     // let student = new ()

// console.log(Student)
//     //输出 ƒ Student() {
//     //     Person.apply(this, arguments)
//     // }
// console.log(new Student()) //输出一个对象  Student {name: undefined, age: undefined}
// let student1 = new Student('asdfghjkl')
// student1.sayName() //asdfghjkl

// ES6例子
// class Person {
//     constructor(name, age) {
//         this.name = name;
//         this.age = age;
//     }
//     sayName() {
//         console.log(this.name)
//     }
//     setName(name) {
//         this.name = name
//         console.log(this.name)
//     }
//     static play() {
//         console.log('玩')
//     }
// }

// //实例化
// let eg = new Person('lili', 12);
// eg.sayName() //lili
// eg.setName('ssssss') //ssssss
// Person.play() //玩

// class Student extends Person {
//     constructor(name, age) {
//         super(name, age)
//     }
//     lea() {
//         console.log('我就是我')
//     }
// }
// let student1 = new Student('oo', 123)
// student1.sayName() //oo
// student1.lea() //我就是我
// Student.play() //玩